Fix the return value (return number of colors that failed), and handle
authorRichard Hult <richard@imendio.com>
Wed, 13 Feb 2008 14:20:51 +0000 (14:20 +0000)
committerRichard Hult <rhult@src.gnome.org>
Wed, 13 Feb 2008 14:20:51 +0000 (14:20 +0000)
2008-02-13  Richard Hult  <richard@imendio.com>

* gdk/quartz/gdkcolor-quartz.c: (gdk_colormap_alloc_colors): Fix
the return value (return number of colors that failed), and handle
RGBA colormap.
(gdk_colormap_free_colors): Fix typo in comment.

svn path=/trunk/; revision=19557

ChangeLog
gdk/quartz/gdkcolor-quartz.c

index c02c922a2a50dd6a6ce99744360a1afada8a2375..d208e845ffcd8c7196a43d409adb10706cb7710f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-02-13  Richard Hult  <richard@imendio.com>
+
+       * gdk/quartz/gdkcolor-quartz.c: (gdk_colormap_alloc_colors): Fix
+       the return value (return number of colors that failed), and handle
+       RGBA colormap.
+       (gdk_colormap_free_colors): Fix typo in comment.
+
 2008-02-13  Kristian Rietveld  <kris@imendio.com>
 
        * gtk/gtktreeview.c (gtk_tree_view_stop_rubber_band): only
index a2772e6fed8ee470affb0559ef3f64d79c65b3d1..7b15a9e8df2175014083fa208dbffdd4e32c3574 100644 (file)
@@ -137,9 +137,7 @@ gdk_colormap_free_colors (GdkColormap    *colormap,
                           const GdkColor *colors,
                           gint            n_colors)
 {
-  /* This function shouldn't do anything since
-   * colors are neve allocated.
-   */
+  /* This function shouldn't do anything since colors are never allocated. */
 }
 
 gint
@@ -151,18 +149,28 @@ gdk_colormap_alloc_colors (GdkColormap *colormap,
                           gboolean    *success)
 {
   int i;
+  int alpha;
+
+  g_return_val_if_fail (GDK_IS_COLORMAP (colormap), ncolors);
+  g_return_val_if_fail (colors != NULL, ncolors);
+  g_return_val_if_fail (success != NULL, ncolors);
+
+  if (gdk_colormap_get_visual (colormap)->depth == 32)
+    alpha = 0xff;
+  else
+    alpha = 0;
 
   for (i = 0; i < ncolors; i++)
     {
-      colors[i].pixel = ((colors[i].red >> 8) & 0xff) << 16 |
-                       ((colors[i].green >> 8) & 0xff) << 8 |
-                       ((colors[i].blue >> 8) & 0xff);
+      colors[i].pixel = alpha << 24 |
+        ((colors[i].red >> 8) & 0xff) << 16 |
+        ((colors[i].green >> 8) & 0xff) << 8 |
+        ((colors[i].blue >> 8) & 0xff);
     }
 
-  if (success)
-    *success = TRUE;
+  *success = TRUE;
 
-  return ncolors;
+  return 0;
 }
 
 void